package jh.slm.calculations;

/**
 * 内存引用分配
 */
public class Allocator {
	static { System.loadLibrary("allocator"); }

	/**
	 * 分配int 数组
	 * @param size
	 * @return
	 */
	public static native Object Allocate(int size);

	/**
	 * 释放内存
	 * @param data
	 */
	public static native void Free(Object data);

	/**
	 * 获取数据
	 * @param data
	 * @return
	 */
	public static native int[] DeRefInt(Object data);

	/**
	 * 获取数据 long
	 * @param data
	 * @return
	 */
	public static native long[] DeRefLong(Object data);

	/**
	 * 复制
	 * @param dataIn
	 * @param dataOut
	 */
	public static native void Copy(int[] dataIn, Object dataOut);

	/**
	 * 复制
	 * @param dataIn
	 * @param dataOut
	 */
	public static native void CopyBytes(byte[] dataIn, Object dataOut);

	/**
	 *
	 * @param dataIn
	 * @param dataOut
	 */
	public static native void Copy16To32(byte[] dataIn, Object dataOut);

	/**
	 *
	 * @param dataIn
	 * @param dataOut
	 */
	public static native void Copy24To32(byte[] dataIn, Object dataOut);
}
